package lrucache;

import java.util.LinkedHashMap;
import java.util.Map;

public class LRUCache extends LinkedHashMap<Integer, Integer> {

    public int capacity;//容量
    public LRUCache(int capacity) {
        //这里的true代表基于访问顺序
        super(capacity, 0.75F, true);
        this.capacity = capacity;//指定容量
    }

    @Override
    public Integer get(Object key) {
        return super.getOrDefault(key, -1);
    }

    public Integer put(Integer key, Integer value) {
        return super.put(key, value);
    }

    /**
     * 为什么要重写这个方法？
     * 因为达到某个条件为 true 就会删除头节点
     * @param eldest
     * @return
     */
    @Override
    protected  boolean removeEldestEntry(Map.Entry<Integer, Integer> eldest) {
        return size() > capacity;
    }

}
